1. 为什么通过 npm install -g 安装全局命令时,包名和命令名称不一致?

  • npm install -g 安装全局包时,实际执行的命令会通过 package.json 文件中的 bin 配置来确定。
  • 例如,安装了 view-cli,但执行的命令是 view。这是因为 view 是在 view-clipackage.json 中通过 bin 配置为指向实际的执行文件(如 view.js)。
  • 通过 which view 可以查看到执行文件的位置,实际上 view 是一个软链接,指向 node_modules/.bin 目录下的文件。

2. 全局安装 view-cli 时发生了什么?

  • 安装时,npm 会将 view-cli 下载到 node_modules 目录中。
  • 安装完毕后,npm 会根据 package.json 中的 bin 配置,在系统的全局环境变量路径下创建一个软链接(通常是 node_modules/.bin),使得在任何地方都可以通过命令 view 来执行实际的脚本(如 view.js)。

3. 执行 view 命令时发生了什么?

  • 执行 view 命令时,操作系统会查找 view 命令,并发现它是一个软链接,指向 node_modules/.bin/view.js
  • 系统会通过 node 解释器执行 view.js 文件。这是因为 view.js 文件本身已经通过 #!/usr/bin/env node 声明了它是一个 Node.js 可执行文件,操作系统会自动用 node 来执行它。

4. 如何让自定义的 JS 文件可执行?

  • 正常情况下,JS 文件无法直接通过命令行执行。需要在文件的顶部添加 #!/usr/bin/env node 来声明这是一个 Node.js 脚本文件。
  • 然后需要赋予文件可执行权限(通过 chmod 命令),并可以通过软链接将其添加到环境变量路径中,最终实现通过命令行直接执行。

5. 如何创建自定义命令?

  • 如果想创建一个自定义命令(例如 im),可以创建一个软链接,指向一个脚本文件(如 test.js)。
  • 软链接可以通过 ln -s 命令创建,或者在 Windows 上通过创建快捷方式来实现。
  • 一旦软链接创建完成,就可以像使用其他命令一样,直接通过命令行调用该命令。